Объединение Ruby и C представляет собой стратегическое союз между высокой производительностью разработчиков в Ruby (изящество) и низкоуровневой скоростью выполнения в С (производительность). Каждый процесс на Ruby начинается с интерпретатора на С; команда echo 'puts "Hello"' | ruby иллюстрирует точку входа, где логика хостинга на С инициализирует среду.
1. Общий элемент (VALUE)
В центре этого моста находится тип VALUE тип — это обёртка на С, представляющая каждый объект в Ruby, включая Qnil и строки, закодированные в UTF-8. Он обеспечивает единый интерфейс для передачи данных между двумя языками.
2. Интерфейс и экспортирование
Используя вспомогательные функции такие как rb_define_class_under, разработчики экспортируют логику, определённую на С, в пространства имён Ruby. Эта архитектура позволяет писать критически важные по производительности исходные файлы базовой библиотеки на языке С, оставаясь доступными как стандартные объекты в Ruby.
Это взаимодействие гарантирует, что сложные структуры RData в С управляются сборщиком мусора в Ruby, позволяя высокочастотным движкам работать внутри изящных обёрток на Ruby.